home *** CD-ROM | disk | FTP | other *** search
/ PCMania 39 / PCMania CD39_2.iso / pcmania / render39 / staircas / ionic.inc < prev    next >
Text File  |  1995-10-16  |  8KB  |  281 lines

  1. /*** IonicColumn object ************************************/
  2.  
  3. #declare ICBase =
  4.   union {
  5.     union {
  6.       cylinder { (y * 0.00), (y * 0.13), 0.60 }
  7.       torus { 0.60, 0.05 translate (y * 0.05) }
  8.  
  9.       bounded_by { cylinder { (y * 0.00), (y * 0.13), 0.65 } }
  10.     } // union
  11.  
  12.     difference {
  13.       cylinder { (y * 0.13), (y * 0.26), 0.57 }
  14.       torus { 0.57, 0.05 translate (y * 0.18) }
  15.  
  16.       bounded_by { cylinder { (y * 0.13), (y * 0.26), 0.57 } }
  17.     } // difference
  18.  
  19.     union {
  20.       cylinder { (y * 0.26), (y * 0.38), 0.52 }
  21.       torus { 0.52, 0.05 translate (y * 0.31) }
  22.  
  23.       bounded_by { cylinder { (y * 0.26), (y * 0.38), 0.57 } }
  24.     } // union
  25.  
  26.     difference {
  27.       cylinder { (y * 0.38), (y * 0.40), 0.52 }
  28.       torus { 0.52, 0.02 translate (y * 0.40) }
  29.  
  30.       bounded_by { cylinder { (y * 0.38), (y * 0.40), 0.52 } }
  31.     } // difference
  32.  
  33.     bounded_by { cylinder { (y * 0.00), (y * 0.40), 0.65 } }
  34.   } // union
  35.  
  36. #declare ICFlute =
  37.   union {
  38.     sphere { <0.49963235, 0.45, 0>, 0.03500000 }
  39.     sphere { <0.45036765, 7.15, 0>, 0.03156833 }
  40.     cone { <0.49963222, 0.45001793, 0>, 0.035, <0.45036753, 7.15001617, 0>, 0.03156832 }
  41.  
  42.     bounded_by { box { <0.41, 0.4, -0.04>, <0.54, 7.19, 0.04> } }
  43.   } // union
  44.  
  45. #declare ICSixFlutes =
  46.   union {
  47.     object { ICFlute rotate (y *  -0) }
  48.     object { ICFlute rotate (y * -15) }
  49.     object { ICFlute rotate (y * -30) }
  50.     object { ICFlute rotate (y * -45) }
  51.     object { ICFlute rotate (y * -60) }
  52.     object { ICFlute rotate (y * -75) }
  53.  
  54.     bounded_by {
  55.       box {
  56.         <0, 0.4, 0>, <0.23308160, 7.19, 0.70225229>
  57.  
  58.         rotate (y * -38.13651934)
  59.         translate <0.46592384, 0, -0.08851891>
  60.       } // box
  61.     } // bounded_by
  62.   } // union
  63.  
  64. #declare ICShaft =
  65.   difference {
  66.     cone { (y * 0.40), 0.50, (y * 7.20), 0.45 }
  67.  
  68.     object { ICSixFlutes rotate (y *   -0) }
  69.     object { ICSixFlutes rotate (y *  -90) }
  70.     object { ICSixFlutes rotate (y * -180) }
  71.     object { ICSixFlutes rotate (y * -270) }
  72.  
  73.     bounded_by { cone { (y * 0.40), 0.50, (y * 7.20), 0.45 } }
  74.   } // difference
  75.  
  76. #declare ICVolute =
  77.   union {
  78.     // Left 'half'
  79.  
  80.     union {
  81.       // Body
  82.  
  83.       intersection {
  84.         box { <0.275, 7.7, -0.50>, <0.55, 7.93, 0.50> }
  85.         cylinder { <0.55, 6.96875, -1>, <0.55, 6.96875, 1>, 0.78125 inverse }
  86.       } // intersection
  87.  
  88.       intersection {
  89.         cylinder { (z * -0.50), (z * 0.50), 0.23 }
  90.         plane { x, 0 }
  91.  
  92.         translate <0.55, 7.50, 0>
  93.       } // intersection
  94.  
  95.       // Contour
  96.  
  97.       intersection {
  98.         cylinder { <0.55, 6.96875, -0.55>, <0.55, 6.96875, 0.55>, 0.78125 }
  99.         cylinder { <0.55, 6.96875, -1.00>, <0.55, 6.96875, 1.00>, 0.76125 inverse }
  100.         plane { x, 0 translate (x * 0.55) }
  101.         plane { y, 0 rotate (z * 110.60969294) translate <0.55, 6.96875, 0> }
  102.       } // intersection
  103.  
  104.       intersection {
  105.         union {
  106.           intersection {
  107.             cylinder { (z * -0.55), (z * 0.55), 0.25 }
  108.             cylinder { (z * -1.00), (z * 1.00), 0.23 inverse }
  109.           } // intersection
  110.  
  111.           intersection {
  112.             cylinder { (z * -0.55), (z * 0.55), 0.15 }
  113.             cylinder { (z * -1.00), (z * 1.00), 0.13 inverse }
  114.           } // intersection
  115.         } // union
  116.  
  117.         plane { x, 0 }
  118.  
  119.         translate <0.55, 7.50, 0>
  120.       } // intersection
  121.  
  122.       bounded_by { box { <0.27, 7.25, -0.55>, <0.55, 7.93, 0.55> } }
  123.     } // union
  124.  
  125.     // Right 'half'
  126.  
  127.     union {
  128.       // Body
  129.  
  130.       intersection {
  131.         cylinder { (z * -0.50), (z * 0.50), 0.33 }
  132.         plane { -x, 0 }
  133.  
  134.         translate <0.55, 7.60, 0>
  135.       } // intersection
  136.  
  137.       // Contour
  138.  
  139.       intersection {
  140.         union {
  141.           intersection {
  142.             cylinder { (z * -0.55), (z * 0.55), 0.35 }
  143.             cylinder { (z * -1.00), (z * 1.00), 0.33 inverse }
  144.  
  145.             translate <0.55, 7.60, 0>
  146.           } // intersection
  147.  
  148.           intersection {
  149.             cylinder { (z * -0.55), (z * 0.55), 0.20 }
  150.             cylinder { (z * -1.00), (z * 1.00), 0.18 inverse }
  151.  
  152.             translate <0.55, 7.55, 0>
  153.           } // intersection
  154.         } // union
  155.  
  156.         plane { -x, 0 translate (x * 0.55) }
  157.       } // intersection
  158.  
  159.       bounded_by { box { <0.55, 7.25, -0.55>, <0.90, 7.95, 0.55> } }
  160.     } // union
  161.  
  162.     // Center ball of volute
  163.  
  164.     cylinder { (z * -0.55), (z * 0.55), 0.10 translate <0.55, 7.55, 0> }
  165.  
  166.     bounded_by { box { <0.27, 7.25, -0.55>, <0.90, 7.95, 0.55> } }
  167.   } // union
  168.  
  169. #declare ICEOvum =
  170.   union {
  171.     sphere { <0, 0, 0>, 1 scale <0.08, 0.08, 0.05> }
  172.  
  173.     intersection {
  174.       sphere { <0, 0, 0>, 1 scale <0.08, 0.20, 0.05> }
  175.       plane { y, 0 }
  176.     } // intersection
  177.  
  178.     bounded_by { box { <-0.08, -0.20, -0.05>, <0.08, 0.08, 0.05> } }
  179.  
  180.     translate <0, 7.46, -0.45>
  181.   } // union
  182.  
  183. #declare ICESphere = sphere { <0, 7.57, -0.45>, 0.03 }
  184.  
  185. #declare ICEOva =
  186.   union {
  187.     object { ICEOvum rotate (y *  20.28708873 * 0) }
  188.     object { ICEOvum rotate (y *  20.28708873 * 1) }
  189.     object { ICEOvum rotate (y * -20.28708873 * 1) }
  190.     object { ICEOvum rotate (y *  20.28708873 * 2) }
  191.     object { ICEOvum rotate (y * -20.28708873 * 2) }
  192.     object { ICEOvum rotate (y *  20.28708873 * 3) }
  193.     object { ICEOvum rotate (y * -20.28708873 * 3) }
  194.  
  195.     object { ICESphere rotate (y *  10.14354437 * 0) }
  196.     object { ICESphere rotate (y *  10.14354437 * 1) }
  197.     object { ICESphere rotate (y * -10.14354437 * 1) }
  198.     object { ICESphere rotate (y *  10.14354437 * 2) }
  199.     object { ICESphere rotate (y * -10.14354437 * 2) }
  200.     object { ICESphere rotate (y *  10.14354437 * 3) }
  201.     object { ICESphere rotate (y * -10.14354437 * 3) }
  202.     object { ICESphere rotate (y *  10.14354437 * 4) }
  203.     object { ICESphere rotate (y * -10.14354437 * 4) }
  204.     object { ICESphere rotate (y *  10.14354437 * 5) }
  205.     object { ICESphere rotate (y * -10.14354437 * 5) }
  206.     object { ICESphere rotate (y *  10.14354437 * 6) }
  207.     object { ICESphere rotate (y * -10.14354437 * 6) }
  208.  
  209.     bounded_by { box { <-0.46, 7.26, -0.50>, <0.46, 7.60, -0.14> } }
  210.   } // union
  211.  
  212. #declare ICETorus =
  213.   torus {
  214.     0.45, 0.01
  215.  
  216.     bounded_by { cylinder { (y * -0.01), (y * 0.01), 0.46 } }
  217.   } // torus
  218.  
  219. #declare ICEcchinus =
  220.   union {
  221.     cylinder { (y * 7.23), (y * 7.75), 0.45 }
  222.  
  223.     object { ICEOva rotate (y *   0) }
  224.     object { ICEOva rotate (y * 180) }
  225.  
  226.     object { ICETorus translate (y * 7.245) }
  227.     object { ICETorus translate (y * 7.615) }
  228.  
  229.     bounded_by { cylinder { (y * 7.23), (y * 7.75), 0.50 } }
  230.   } // union
  231.  
  232. #declare ICCapital =
  233.   union {
  234.     cylinder { (y * 7.20), (y * 7.23), 0.48 }
  235.  
  236.     object { ICEcchinus }
  237.  
  238.     union {
  239.       intersection {
  240.         box { <-0.275, 7.65, -0.50>, <0.275, 7.93, 0.50> }
  241.         cylinder { <0, 8.43125, -1>, <0, 8.43125, 1>, 0.78125 }
  242.       } // intersection
  243.  
  244.       intersection {
  245.         cylinder { <0, 8.43125, -0.55>, <0, 8.43125, 0.55>, 0.80125 }
  246.         cylinder { <0, 8.43125, -1>, <0, 8.43125, 1>, 0.78125 inverse }
  247.         plane { -y, 0 rotate (z * 110.60969294) translate <0, 8.43125, 0> }
  248.         plane {  y, 0 rotate (z *  69.39030706) translate <0, 8.43125, 0> }
  249.       } // intersection
  250.  
  251.       bounded_by { box { <-0.29, 7.63, -0.55>, <0.29, 7.93, 0.55> } }
  252.     } // union
  253.  
  254.     box { <-0.55, 7.93, -0.55>, <0.55, 7.95, 0.55> }
  255.  
  256.     object { ICVolute rotate (y *   0) }
  257.     object { ICVolute rotate (y * 180) }
  258.  
  259.     cylinder { (y * 7.95), (y * 8.00), 0.50 }
  260.  
  261.     intersection {
  262.       torus { 0.50, 0.05 }
  263.       plane { y, 0.00 }
  264.  
  265.       bounded_by { cylinder { (y * -0.05), (y * 0.00), 0.55 } }
  266.  
  267.       translate (y * 8.00)
  268.     } // intersection
  269.  
  270.     bounded_by { box { <-0.90, 7.20, -0.55>, <0.90, 8.00, 0.55> } }
  271.   } // union
  272.  
  273. #declare IonicColumn =
  274.   union {
  275.     object { ICBase }
  276.     object { ICShaft }
  277.     object { ICCapital }
  278.  
  279.     bounded_by { box { <-0.9, 0, -0.65>, <0.9, 8, 0.65> } }
  280.   } // union
  281.